package cn.szbo.jksystem.core;

import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.RowMapper;

/**
 * @author nick xue
 * 
 *         2012-7-20 下午3:47:00
 */
public interface GenericService<T> {

	/**
	 * 增加数据
	 * 
	 * @param sql
	 * @param values
	 */
	public int insert(String sql, List<Object> values);

	/**
	 * 修改数据
	 * 
	 * @param sql
	 * @param values
	 */
	public int update(String sql, List<Object> values);

	/**
	 * 删除数据
	 * 
	 * @param sql
	 * @param values
	 */
	public int delete(String sql, List<Object> values);

	/**
	 * 单个数值查询
	 * 
	 * @param sql
	 *            比如：select count(*) from user where id=?
	 * @param values
	 * @return
	 */
	public long queryForLong(String sql, List<Object> values);

	/**
	 * 批量查询
	 * 
	 * @param sql
	 *            比如：select * from user where id=?
	 * @param values
	 * @return 每条记录为map,其中key为字段名，value为数据库字段值
	 */
	@SuppressWarnings("unchecked")
	public List<Map> queryForList(String sql, List<Object> values);

	/**
	 * 单一查询,返回KEY=VALUE的MAP
	 * 
	 * @param sql
	 * @param values
	 * @return
	 */
	public Map<String, Object> queryForSingle(String sql, List<Object> values);

	/**
	 * 单一查询，返回单个对象
	 * 
	 * @param sql
	 * @param values
	 * @param t
	 * @return
	 */
	public Object queryForSingle(String sql, List<Object> values,
			RowMapper userObject);

	// int deleteByPrimaryKey(String sid);
	//
	// int insert(T entity);
	//
	// int insertSelective(T entity);
	//
	// T selectByPrimaryKey(String sid);
	//
	// int updateByPrimaryKeySelective(T entity);
	//
	// int updateByPrimaryKey(T entity);
	//
	// /**
	// * 动态条件查找
	// *
	// * @param t
	// * @return
	// */
	// List<T> selectBySelective(T entity);
	//
	// /**
	// * 动态条件删除
	// */
	// int deleteBySelective(T entity);
	//
	// /**
	// * 批量插入
	// *
	// * @param list
	// */
	// int insertByBatch(List<T> list);
	//
	// /**
	// * 批量删除
	// *
	// * @param idList
	// * id集合
	// * @return
	// */
	// int deleteByBatch(List<String> idList);
	//
	// /**
	// * 分页查询
	// *
	// * @param page
	// * @return
	// */
	// Pagination<T> selectByPage(Pagination<T> page);

}
